package zy.bluetooth.service;

import android.os.Environment;

import org.greenrobot.eventbus.EventBus;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import zy.bluetooth.APP;
import zy.bluetooth.base.bean.MessageBean;


/**
 * 接收消息服务端
 */
public class ReceiveSocketService {

    private int RECEIVER_MESSAGE = 21;//收到消息
    private int RECEIVER_FILE = 22;//收到文件
    private List<Byte> bytes = new ArrayList<>();
    private long firstTime = 0;
    private long secondTime = 0;
    private int errorData = 23;
    private String content;

    public void receiveMessage() {
        if (APP.bluetoothSocket == null) {
            return;
        }
        try {
            while (true) {
                InputStream inputStream = APP.bluetoothSocket.getInputStream();
                byte[] buffer = new byte[1024];
                int len = inputStream.read(buffer);
//                String s = "";
//                for (int i = 0; i < len; i++) {
//                    s = s + "," + buffer[i];
//                }
               EventBus.getDefault().post(new MessageBean(errorData, ""));
//                if (len == 1) {
//                    if (bytes.size() == 0) {
//                        firstTime = System.currentTimeMillis();
//                        bytes.add(buffer[0]);
//                    } else if (bytes.size() == 1) {
//                        secondTime = System.currentTimeMillis();
//                        if (secondTime - firstTime < 2000) {
//                            bytes.add(buffer[0]);
//                            int a = 0;
//                            if (bytes.get(0).byteValue() < 0) {
//                                a = bytes.get(0).byteValue() + 256;
//                            } else {
//                                a = bytes.get(0).byteValue();
//                            }
//                            int b = 0;
//                            if (bytes.get(1).byteValue() < 0) {
//                                b = bytes.get(1).byteValue() + 256;
//                            } else {
//                                b = bytes.get(1).byteValue();
//                            }
//                            int i = a << 8;
//                            int i1 = i | b;
//                            EventBus.getDefault().post(new MessageBean(RECEIVER_MESSAGE, i1 + ""));
//                        } else {
//                            bytes.clear();
//                            bytes.add(buffer[0]);
//                        }
//                    } else if (bytes.size() == 2) {
//                        firstTime = System.currentTimeMillis();
//                        bytes.clear();
//                        bytes.add(buffer[0]);
//                    }
//                } else if (len == 2) {
//
//                    int a = 0;
//                    int b = 0;
//                    if (buffer[0] < 0) {
//                        a = buffer[0] + 256;
//                    } else {
//                        a = buffer[0];
//                    }
//                    if (buffer[1] < 0) {
//                        b = buffer[1] + 256;
//                    } else {
//                        b = buffer[1];
//                    }
//
//                    int i = a << 8;
//                    int i1 = i | b;
//                    EventBus.getDefault().post(new MessageBean(RECEIVER_MESSAGE, i1 + ""));
//                }

//                if (len == 2) {
//                    int i = buffer[0] << 8;
//                    int i1 = i | buffer[1];
//                    EventBus.getDefault().post(new MessageBean(RECEIVER_MESSAGE, i1 + ""));
//                }

                String s1 = new String(buffer);
                content = content + s1.trim().toString();
                String[] ds = content.split("D");
                for (int length = ds.length - 1; length >= 0; length--) {
                    if (ds[length].contains("H") && ds[length].endsWith(",")) {
                        EventBus.getDefault().post(new MessageBean(RECEIVER_MESSAGE, "D" + ds[length]));
                        break;
                    }
                }

//

            }
//            // 从客户端获取信息
//            BufferedReader bff = new BufferedReader(new InputStreamReader(inputStream));
//            String json;
//            while (true) {
//                while ((json = bff.readLine()) != null) {
//                    EventBus.getDefault().post(new MessageBean(RECEIVER_MESSAGE,json));
//                }
//                if ("file".equals(json)) {
//                    FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory() + "/test.gif");
//                    int length;
//                    int fileSzie = 0;
//                    byte[] b = new byte[1024];
//                    // 2、把socket输入流写到文件输出流中去
//                    while ((length = inputStream.read(b)) != -1) {
//                        fos.write(b, 0, length);
//                        fileSzie += length;
//                        System.out.println("当前大小：" + fileSzie);
//                        //这里通过先前传递过来的文件大小作为参照，因为该文件流不能自主停止，所以通过判断文件大小来跳出循环
//                    }
//                    fos.close();
//                    EventBus.getDefault().post(new MessageBean(RECEIVER_FILE,"文件保存成功"));
//                }
//            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
